package com.ruoyi.workflow.service.impl;

import com.alibaba.fastjson2.JSON;
import com.ruoyi.business.domain.ServiceItem;
import com.ruoyi.business.service.IServiceItemService;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.workflow.domain.CarPackageAudit;
import com.ruoyi.workflow.domain.CarPackageAuditVo;
import com.ruoyi.workflow.service.IBpmnNodeService;
import com.ruoyi.workflow.service.ICarPackageAuditService;
import com.ruoyi.workflow.service.ITaskDoneService;
import com.ruoyi.workflow.service.ITaskToDoService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class TaskDoneServiceImpl implements ITaskDoneService {
    @Autowired
    private TaskService taskService;
    @Autowired
    private ICarPackageAuditService carPackageAuditService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private ISysUserService userService;
    @Autowired
    private IBpmnNodeService bpmnNodeService;
    @Autowired
    private IServiceItemService serviceItemService;
    @Transactional(rollbackFor = Exception.class)
    @Override
    public TableDataInfo selectDoneList(CarPackageAudit carPackageAudit) {
        // 1. 接收前端的分页参数
        // 2. 以当前用户作为负责人, 统计任务个数
        // 3. 如果数量为 0, 返回空数据
        // 4. 如果有数据, 构建分页条件
        // 5. 以当前用户作为负责人, 查询所有已经完成的任务列表
        // 6. 创建一个集合, 用于存储最终返回的数据列表
        // 7. 遍历任务列表
        // 8. 基于任务对象, 得到流程实例 id, 查询流程实例对象
        // 9. 基于流程实例对象, 得到业务标识, 基于业务标识查询审核记录对象
        // 10. 将审核记录对象的数据拷贝到 vo 中, 并补充相应字段(完成时间/任务名称/负责人)
        // 11. 查询任务的创建人并设置到审核记录
        // 12. 将 vo 对象加入返回的集合中
        // 13. 返回分页数据
        return null;
    }
}
